gusucode.com > VC++ 图像处理(灰度变换、图像合成、羽化、中心法校正)-源码 > VC++ 图像处理(灰度变换、图像合成、羽化、中心法校正)-源码程序/code/VCIPH/VCIPHDoc.cpp
//Download by http://www.NewXing.com // VCIPHDoc.cpp : implementation of the CVCIPHDoc class // #include "stdafx.h" #include "VCIPH.h" #include "VCIPHDoc.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CVCIPHDoc IMPLEMENT_DYNCREATE(CVCIPHDoc, CDocument) BEGIN_MESSAGE_MAP(CVCIPHDoc, CDocument) //{{AFX_MSG_MAP(CVCIPHDoc) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CVCIPHDoc construction/destruction CVCIPHDoc::CVCIPHDoc() { // TODO: add one-time construction code here pDibs=NULL; } CVCIPHDoc::~CVCIPHDoc() { } BOOL CVCIPHDoc::OnNewDocument() { if (!CDocument::OnNewDocument()) return FALSE; // TODO: add reinitialization code here // (SDI documents will reuse this document) return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CVCIPHDoc serialization void CVCIPHDoc::Serialize(CArchive& ar) { if (ar.IsStoring()) { // TODO: add storing code here } else { // TODO: add loading code here } } ///////////////////////////////////////////////////////////////////////////// // CVCIPHDoc diagnostics #ifdef _DEBUG void CVCIPHDoc::AssertValid() const { CDocument::AssertValid(); } void CVCIPHDoc::Dump(CDumpContext& dc) const { CDocument::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CVCIPHDoc commands BOOL CVCIPHDoc::LoadBMP(LPCTSTR lpszPathName) { BITMAPFILEHEADER Bfh; BITMAPINFOHEADER Bmih; FILE *fp; int wid,hei,bits,pals,size; RGBQUAD ColorTab[256]; fp=fopen(lpszPathName,"rb"); if (fp==NULL) return FALSE; fread(&Bfh,sizeof(BITMAPFILEHEADER),1,fp); // 读入位图文件头 fread(&Bmih,sizeof(BITMAPINFOHEADER),1,fp); // 读入位图信息头 wid =Bmih.biWidth; // 得图像主要参数 hei =Bmih.biHeight; bits=Bmih.biBitCount; pDibs = CreateDibs(wid,hei,bits); // 建立位图 pals=(Bfh.bfOffBits-sizeof(BITMAPFILEHEADER)- sizeof(BITMAPINFOHEADER)); // 计算调色板尺寸 if (pals) { fread(ColorTab,pals,1,fp); // 读入调色板数据 pDibs->setallpalette(ColorTab); // 设置位图调色板 } size=(wid*bits+31)/32*4*hei; // 计算像素字节数 fseek(fp,Bfh.bfOffBits,SEEK_SET); // 像素数据定位 fread(pDibs->pBits,size,1,fp); // 读入像素数据 fclose(fp); return TRUE; } BOOL CVCIPHDoc::OnOpenDocument(LPCTSTR lpszPathName) { if (!CDocument::OnOpenDocument(lpszPathName)) return FALSE; // TODO: Add your specialized creation code here return(LoadBMP(lpszPathName)); }